import numpy as np
import matplotlib.pyplot as plt

# 有一组关于苹果含糖量t与销售价格z之间的10组关系数据如下：
t=[2.8,1.2,0.9,0.4,1.3,1.2,2.0,1.6,1.8,2.2]
z=[4.9,2.8,2.1,1.4,2.4,2.4,3.8,3.0,3.4,4.0]

# (1)画出散点图
plt.scatter(t, z, s=8)

# (2)如果变量t与z之间具有线性相关关系，求出线性回归方程并在散点图中画出线性方程图；
m = len(t)
x = np.array(t).reshape(m, 1)
y = np.array(z).reshape(m, 1)


def add_x0(x):
    m = len(x)
    X = np.c_[np.ones([m, 1]), x]
    return X


X = add_x0(x)
XT = X.T

# 根据正规方程
theta = np.linalg.inv(XT.dot(X)).dot(XT).dot(y)


def model(X, theta):
    return X.dot(theta)


plt_x = np.array([x.min(), x.max()]).reshape(2, 1)
plt_X = add_x0(plt_x)
plt_y = model(plt_X, theta)

# 画出线性方程图
plt.plot(plt_x, plt_y, 'r')

plt.show()
